An IR remote control device typically transmits IR operational signals that are received by an electronic consumer device. A user operates and controls the electronic consumer device by pressing an appropriate key on the remote control device. Pressing the key causes an IR operational signal to be transmitted to the electronic consumer device. The electronic consumer device responds by taking an action desired by the user. A codeset defines the possible IR operational signals that can be output from the remote control device when the keys on the remote control device are pressed. A particular codeset may be usable to control multiple models and brands of an electronic consumer device. A particular codeset may control more than one type of electronic consumer device. Accordingly, a remote control device typically stores a database of codesets. The user of the remote control device can configure the remote control device such that one of the codesets is used to control a first type of device (for example, a television), and such that a second one of the codesets is used to control a second type of device (for example, a VCR). Because it is desired that the remote control device be usable to control any one of the multitude of electronic consumer devices on the market, the number of codesets stored in the remote control device is typically large and requires an undesirably large amount of memory. Providing this memory adds to the cost of the remote control device. It is therefore desirable to be able to reduce the amount of memory required to store the database of codesets.
One particular database of codesets is a block of packed binary data that includes a “codeset information portion” for each codeset, a “modulation and timing protocol information portion”, and a “codeset selection criteria portion”. The codeset information portion includes, for each codeset, key codes, key flags, a system code, format and size information, and a protocol number. The protocol number points to one of multiple “protocols” in the modulation and timing protocol information portion.
A protocol contains information about how to generate an operational signal including the carrier frequency (if applicable), the encoding pattern, timing information, and information on the general structure of the signal. In the particular database format described here, the protocols are separated from the codeset information because many codesets may use the same protocol. Providing the protocols separate from the codeset information allows a more efficient use of memory space on the remote control device.
An encoding pattern defines the way the binary information in a key code is formatted for transmission with respect to the timing information within the protocol. In the particular database format described here, these patterns are defined by separate sections of software drivers which are selected when the protocol is examined. There are typically many protocols that use each encoding pattern.
FIG. 1 (prior art) illustrates how indexing of the database is done using a number that indicates the type of device to be controlled (eg. TV, VCR), a codeset number (eg. 0001, 0002), and the key pressed. When a key is pressed on a remote control device, the following information is known: the type of device to be controlled is known by a device number (for example, “00” for TV, “01” for VCR), the number of the codeset is known (for example, code number “002” of the subset of codesets usable to control the device type), and an indication of the particular key (for example, the “1” key) on the remote control device that was pressed down. First, the entry in the device table for the type of device to be controlled is consulted. This two byte entry points to the start of a device index table for the type of device to be controlled. In the example where the type of device to be controlled is a TV, then the device table points to the device index table for televisions. In the example where the codeset number is “002”, the 002 entry in the TV code index table is consulted. This entry is a two byte pointer that points to one of the codeset blocks. In the present example, the codeset block pointed to is codeset block 001. The selected codeset block contains the digital key code for the particular key pressed. The codeset block also points to the protocol required. The protocol contains the timing and structure information and references the encoding scheme to be used in the generation of the operational signal.
Although the format described above works well, there is a desire to improve the format for reasons including the following: 1) To reduce the amount of memory space needed to store the database on the remote control device (even larger ROM size microcontrollers used on remote control devices today cannot sometimes store the required database), 2) To better support new code schemes that have recently come into use, especially code schemes that have recently come into use in Europe, 3) To work more closely with the next generation remote control devices that are realized as IR transmitting virtual machines, and 4) To allow for future expansion support for as yet undiscovered codes.